home *** CD-ROM | disk | FTP | other *** search
/ TOS Silver 2000 / TOS Silver 2000.iso / programm / MM2_DEV / S / UTILITY / DELFILES.M < prev    next >
Encoding:
Text File  |  1989-09-21  |  2.0 KB  |  82 lines

  1. MODULE DelFiles;
  2.  
  3. (*
  4.  * Hilfsprogramm für Megamax Modula-2
  5.  *
  6.  * Wird dieses Modul gestartet, fragt es nach einem Dateinamen.
  7.  * Dabei können auch "Wildcards" ('*', '?') eingegeben werden.
  8.  * Die gewünschten Dateien werden dann gelöscht.
  9.  * Beispiele:
  10.  *   'A:\CODES.DEF\*.DEF' löscht alle Dateien im Ordner mit der Endung 'DEF'.
  11.  *   '*.*' löscht alle Dateien im aktuellen Verzeichnis.
  12.  * Wird eine Leereingabe gemacht, endet das Programm.
  13.  *
  14.  * Es bietet sich an, dieses Modul im Start-Batch mit 'TOOL DelFiles' einzu-
  15.  * tragen. Dabei sollte aber keinesfalls der Pfad, auf dem sich dieses Modul
  16.  * befindet, mit angegeben werden, weil dieser Pfad sonst beim Starten sofort
  17.  * zum aktuellen Verzeichnis wird.
  18.  *)
  19.  
  20. FROM InOut IMPORT
  21.   WriteLn, WriteString, ReadString, Write, Read, WriteInt, BusyRead;
  22.  
  23. FROM Directory IMPORT
  24.   DirQuery, DirEntry, FileAttr, FileAttrSet, Delete;
  25.  
  26. FROM Files IMPORT GetStateMsg;
  27.  
  28. FROM Strings IMPORT
  29.   Space, Length, String, Concat, Empty;
  30.  
  31.  
  32. PROCEDURE error (res: INTEGER);
  33.   VAR s: String;
  34.   BEGIN
  35.     GetStateMsg (res, s);
  36.     WriteString (s);
  37.   END error;
  38.  
  39. PROCEDURE delEntry (REF path: ARRAY OF CHAR; e: DirEntry): BOOLEAN;
  40.  
  41.   VAR res: INTEGER; p: String; ok: BOOLEAN; ch: CHAR;
  42.   
  43.   BEGIN
  44.     WriteLn;
  45.     BusyRead (ch);
  46.     IF ch # 0C THEN
  47.       Read (ch);
  48.       WriteString ('Löschvorgang abgebrochen.');
  49.       RETURN FALSE
  50.     END;
  51.     Concat (path, e.name, p, ok);
  52.     Delete (p, res);
  53.     WriteString (e.name);
  54.     Write (':');
  55.     WriteString (Space (13 - Length (e.name)));
  56.     IF res = 0 THEN
  57.       WriteString ('gelöscht.');
  58.     ELSE
  59.       error (res)
  60.     END;
  61.     RETURN TRUE
  62.   END delEntry;
  63.  
  64. VAR s: String;
  65.     ch: CHAR;
  66.     res: INTEGER;
  67.  
  68. BEGIN
  69.   LOOP
  70.     WriteString ('Zu löschende Datei(en) ? ');
  71.     ReadString (s);
  72.     IF Empty (s) THEN EXIT END;
  73.     DirQuery (s, FileAttrSet {}, delEntry, res);
  74.     WriteLn;
  75.     IF res < 0 THEN
  76.       error (res);
  77.       WriteLn
  78.     END;
  79.     WriteLn;
  80.   END
  81. END DelFiles.
  82.